درحال حاضر، باتوجه به خرده نداشتن
مقادیر پولی در ایران، عموما از نوعهای int و bigint برای
ذخیره سازی این مقادیر استفاده میشود؛ اما در آینده با احتمال حذف تعدادی از صفرها، نیاز به ثبت خردهها هم ضروری خواهد بود و در اینجا این سؤال مهم مطرح میشود که نوع دادهای
مناسب برای انجام اینکار چیست؟ برای نمونه در SQL Server، نوعهای دادهای decimal، money، smallmoney و امثال آن وجود دارند که در این مطلب، تفاوتهای مهم آنها و روش صحیح انتخاب نوع دادهای مناسب
مخصوص اینکار را بررسی خواهیم کرد. مشکل مهم نوع دادهای int جهت ذخیره سازی مقادیر پولی
فرض کنید جدول سادهای را با دو فیلد Id و Price دارید که نوع مبلغ آنرا با توجه به عدم داشتن خرده در واحد پولی، int انتخاب کردهاید: CREATE TABLE [Test1](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Price] [int] NOT NULL, CONSTRAINT [PK_Test1] PRIMARY KEY CLUSTERED
(
[Id] ASC
));
اگر در این جدول فقط 7 رکورد زیر را ثبت کنیم: Insert into Test1 values (1000000000),(1000000000),(1000000000),(1000000000),(1000000000),(1000000000),(1000000000)
به نظر شما خروجی کوئری سادهی زیر که جهت نمایش جمع مبالغ وارد شده تهیه شده، چیست؟ select sum(price) from Test1
خروجی آن فقط استثنای زیر است! Arithmetic overflow error converting expression to data type int.
عنوان میکند که جمع آن از بازهی اعداد صحیح خارج شدهاست و در سیستمی که نوع مبالغ آنرا int انتخاب کردهاید، دیر یا زود به این مشکل خواهید رسید. فقط کافی است کاربران، یکسالی با آن برنامه کار کنند!
برای حل این مشکل میتوان به صورت موقت، نوع دادهای را به bigint تبدیل کرد و مجددا جمع رکوردها را محاسب دانلود نرم افزار و برنامه...
ما را در سایت دانلود نرم افزار و برنامه دنبال می کنید
برچسب : نویسنده : دانلودی dld بازدید : 131 تاريخ : دوشنبه 16 مرداد 1402 ساعت: 18:52